import { _import } from './index'
import { tree as treeTools } from '../utils/tools'
// 布局处理
import { aboutLayout, fillMain, RouterViewLayout } from "../components/layout/index.js"

/**
 * 判断当前路由类型, global: 全局路由, main: 主入口路由
 * @param {any} route 当前路由
 */
export function fnCurrentRouteType(route, globalRoutes = []) {
    return treeTools.findNode(globalRoutes, node => node.path == route.path) ? 'global' : 'main'
}

/**
 * 创建一个动态的路由对象
 * @param {*} item 
 */
function createRouteObjects(item) {
    if (item.routeUrl && /\S/.test(item.routeUrl)) {
        var route = {
            path: item.routeUrl,
            component: null,
            name: item.code,
            meta: {
                menuId: item.menuId,
                title: item.name,
                isDynamic: true,
                isTab: true
            }
        }
        try {
            let routeUrl = item.routeUrl = item.routeUrl.replace(/^\//, '');
            //如果包含参数类型截取"?"前的内容
            if (/\?/.test(routeUrl)) {
                routeUrl = routeUrl.match(/(\S*)\?/)[1]
            }
            route['component'] = _import(`${routeUrl}`) || null;
            return route
        } catch (e) {
            console.log(e, 'createRouteObjects error')
        }

    }
}
// 2 为其添加一个左右布局的 component 和一个 children
/**
 * 添加动态(菜单)路由
 * @param {*} menuList 菜单列表
 * @param {*} routes 递归创建的动态(菜单)路由
 */
export function fnAddDynamicMenuRoutes(menuList = [], routes = [], level = 1) {
    for (var i = 0; i < menuList.length; i++) {
        let item = menuList[i]
        // 如果是类型为1为全屏布局
        if (item.menuType == 1 || item.menuType == 3) {
            let result = createRouteObjects(item);
            result ? routes.push(result) : ""
        } else if (item.menuType == 2) {
            //模板为左右布局,应当有children子集
            var route = {
                path: item.routeUrl,
                // 第二层开始添加不含侧边栏的路由插槽，否则出现多个侧边栏的情况
                component: level > 1 ? RouterViewLayout : aboutLayout, //左右布局模板
                name: item.code,
                meta: {
                    menuId: item.id,
                    title: item.name,
                    isDynamic: true
                },
                children: []
            }
            //子集添加
            fnAddDynamicMenuRoutes(item.children, route.children, level + 1)
            routes.push(route)
        } else if (item.menuType == 99 && item.children && item.children.length >= 1) {
            //如果只是左侧菜单
            let temp = menuList[i].children;
            fnAddDynamicMenuRoutes(temp, routes)
        }
    }
    return routes;
}
// 添加 menuType
export function parseAddMenuType(tree) {
    treeTools.readTree(tree, (node) => {
        if (node.children && node.children.length) {
            node.menuType = 2
        } else {
            node.menuType = 3
        }
    })
    return tree
}